/*
 * Tactica1DefensaIzquierdo.java
 *
 * Created on 9 de abril de 2007, 21:13
 *
 */

package futbol.tacticas.concursantes2007.tikitaka.tactica;

import futbol.tacticas.*;
import futbol.General;
import java.awt.Point;

/**
 *
 * @author leamsi78
 */
public class Tactica1DefensaIzquierdo extends Estado {
    
    /** Creates a new instance of Tactica1DefensaIzquierdo */
    public Tactica1DefensaIzquierdo() {
    }
    
    public void Entrar(Object obj)
    {
    }
    
    public void Ejecutar(Object obj)
    {
        Tactica1 tactica = (Tactica1)obj;
        if (tactica.jugadorMasCercaBalon != tactica.DEFENSA_IZQUIERDO)
        {
            if (tactica.jugadorMasCercaBalon == tactica.DEFENSA_DERECHO)
            {
                Point defensaDerecho = tactica.equipo.getPosicion(tactica.DEFENSA_DERECHO);
                tactica.comandos.add(new ComandoIrA(tactica.DEFENSA_IZQUIERDO, defensaDerecho.x-20, defensaDerecho.y - 30));
            }
            else
            {
                //Mantener a los jugadores del centro del campo en una posicion relativa al balon
                int dX = (int)(tactica.balon.getPosicionActual().x / 5);
                int desplazamientoY = 0;
                double distanciaY = tactica.balon.getPosicionActual().getY() - tactica.jugador[tactica.MEDIO_CENTRO].getPosicion().getY();
                if (distanciaY > 40.0) 
                {
                    desplazamientoY += (int)((distanciaY - 40.0) / 2);
                    if (desplazamientoY > 50.0) desplazamientoY = 50;
                }
                if (distanciaY < -40.0)
                {
                    desplazamientoY += (int)((distanciaY + 40.0) / 2);
                    if (desplazamientoY < -50.0) desplazamientoY = -50;
                }
                tactica.comandos.add(new ComandoIrA(tactica.DEFENSA_IZQUIERDO, -110 + dX, -30 + desplazamientoY));
            }
        }
        else
        {
            //Tenemos que ir hacia el balon y cuando estemos a menos de 10 entonces golpear el balon
//            tactica.comandos.add(new ComandoIrA(tactica.DEFENSA_IZQUIERDO, tactica.balon.getPosicionActual().getX(), tactica.balon.getPosicionActual().getY()));
            
            Point posicionJugador = tactica.jugador[tactica.DEFENSA_IZQUIERDO].getPosicion();
            Point posicionBalon = tactica.balon.getPosicionActual();
            
//            if (General.getDistancia(posicionJugador.getX(), posicionJugador.getY(), posicionBalon.getX(), posicionBalon.getY()) < 10)
            if (Util.distancia_2(tactica.jugador[tactica.DEFENSA_IZQUIERDO].getPosicion(), tactica.balon.getPosicionActual()) < 100)
            {
                if (posicionJugador.getX() < 0 /*-100*/) 
                    tactica.jugador[tactica.DEFENSA_IZQUIERDO].llevarBalon(new Point(20, -100));
//                    tactica.jugador[tactica.DEFENSA_IZQUIERDO].controlBalon(new Point(-90, -100));
//                    tactica.comandos.add(controlBalon(tactica.DEFENSA_IZQUIERDO, posicionJugador.getX(), posicionJugador.getY(), -90, -100, 29.0));
//                else if (posicionJugador.getX() < -50)
//                    tactica.jugador[tactica.DEFENSA_IZQUIERDO].llevarBalon(new Point(160, 0));
//                    tactica.jugador[tactica.DEFENSA_IZQUIERDO].controlBalon(new Point(-40, -120));
//                    tactica.comandos.add(controlBalon(tactica.DEFENSA_IZQUIERDO, posicionJugador.getX(), posicionJugador.getY(), -40, -120, 29.0));
                else 
                {
                    Point posicionMedioIzquierdo = tactica.jugador[tactica.MEDIO_IZQUIERDO].getPosicion();
                    tactica.comandos.add(new ComandoGolpearBola(tactica.DEFENSA_IZQUIERDO, posicionMedioIzquierdo.getX() + 5 /*20*/, posicionMedioIzquierdo.getY() - 5 /*3*/));
                    tactica.comandos.add(new ComandoIrA(tactica.MEDIO_IZQUIERDO, posicionMedioIzquierdo.getX() + 5 /*20*/, posicionMedioIzquierdo.getY() - 5 /*3*/));
//                    paseAJugador = MEDIO_IZQUIERDO;
//                    tiempoPase = tiempo;
                    tactica.comandos.add(new ComandoIrA(tactica.DEFENSA_IZQUIERDO, -110, -30));
                }
            }
            else
                tactica.jugador[tactica.DEFENSA_IZQUIERDO].irAlBalon();
        }
    }
    
    public void Salir(Object obj)
    {
    }
    
    public boolean Mensaje(Object obj, Mensaje mensaje)
    {
        return true;
    }
}
